<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 二、promise里的静态方法
    // 静态成员：1.静态属性 2.静态方法
    // 静态：和 类有关和实例化对象无关。静态成员不需要实例化直接调用
    // class Person {
    //   static num = 10; // 静态属性
    //   constructor() {
    //     this.height = "178cm";
    //     this.age = 20;
    //   }
    //   static myfn () {  // 静态方法
    //     console.log("程宇");
    //   }
    // }
    // console.log(Person.num);
    // Person.myfn();

    // 1.Promise.resolve(); 创建一个fulfilled状态的promise对象
    // let p = new Promise((resolve, reject) => {
    //   resolve("success");
    // })
    // console.log(p);

    // let p = Promise.resolve("success");
    // console.log(p);

    // class MyPromise {
    //   static resolve (val) {  // 内部帮你实例化了
    //     return new Promise(resolve => {
    //       resolve(val)
    //     })
    //   }
    // }
    // let p = MyPromise.resolve("success");
    // console.log(p);

    // 2.Promise.reject() ; 创建一个失败状态的promise对象
    // let p = Promise.reject("失败了");
    // console.log(p);
    // let p = new Promise((resolve, reject) => {
    //   reject("错误了");
    // })
    // console.log(p);

    // 在链式操作里，需要把错误传递下去，一致进入onRejected里最终返还错误
    // let p1 = new Promise((resolve, reject) => {
    //   reject("错误111");
    // })
    // p1.then(res => {
    //   console.log(111, res);
    // }, err => {
    //   console.log("111err", err);
    //   return Promise.reject(err);
    // }).then(res => {
    //   console.log(222, res);
    // }, err => {
    //   console.log("222err", err);
    //   return Promise.reject(err);
    // }).then(res => {
    //   console.log(333, err);
    // }, err => {
    //   console.log("333err", err);
    // })

    // Promise.reject 的实现
    class MyPromise {
      static resolve (val) {
        return new Promise(resolve => {
          resolve(val);
        })
      }
      static reject (err) {
        return new Promise((resolve, reject) => {
          reject(err);
        })
      }
    }
    let p = MyPromise.reject("错误了");
    console.log(p);

  </script>
</body>

</html>